package com.xdcplus.web.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.entity.ToolProductionLineOpe;
import com.xdcplus.web.common.pojo.dto.ToolProductionLineOpeDTO;
import com.xdcplus.web.common.pojo.dto.ToolProductionLineOpeFilterDTO;
import com.xdcplus.web.common.pojo.vo.ToolDmIvSummaryVO;
import com.xdcplus.web.common.pojo.vo.ToolProductionLineOpeVO;

import java.util.List;


/**
 * (ToolProductionLineOpe)表服务接口层
 *
 * @author Man.Chen
 * @since 2024-12-03 16:40:35
 */
public interface ToolProductionLineOpeService extends BaseService<ToolProductionLineOpe, ToolProductionLineOpe, ToolProductionLineOpeVO> {

    /**
     * 添加(ToolProductionLineOpe)
     *
     * @param toolProductionLineOpeDTO (ToolProductionLineOpeDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveToolProductionLineOpe(ToolProductionLineOpeDTO toolProductionLineOpeDTO);

    /**
     * 修改(ToolProductionLineOpe)
     *
     * @param toolProductionLineOpeDTO (ToolProductionLineOpeDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateToolProductionLineOpe(ToolProductionLineOpeDTO toolProductionLineOpeDTO);

    /**
     * 批量保存或更新(ToolProductionLineOpe)
     *
     * @param toolProductionLineOpeList (ToolProductionLineOpeList)
     * @return {@link Boolean} 是否成功
     */
    List<Long> saveOrUpdateBatch(List<ToolProductionLineOpe> toolProductionLineOpeList);

    /**
     * 批量保存或更新(ToolProductionLineOpeDTOList)
     *
     * @param toolProductionLineOpeDTOList (ToolProductionLineOpeDTOList)
     * @return {@link Boolean} 是否成功
     */
    List<Long> saveOrUpdateBatchByDTOList(List<ToolProductionLineOpeDTO> toolProductionLineOpeDTOList);

    /**
     * 删除(ToolProductionLineOpe)
     *
     * @param id (ToolProductionLineOpe)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteToolProductionLineOpeLogical(Long id);
    
    Boolean deleteToolProductionLineOpeByIds(String ids);

    /**
     * 查询(ToolProductionLineOpe)
     *
     * @param toolProductionLineOpeFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolProductionLineOpeVO>} 状态信息
     */
    List<ToolProductionLineOpeVO> queryToolProductionLineOpeVOList(ToolProductionLineOpeFilterDTO toolProductionLineOpeFilterDTO);

    /**
     * 查询(ToolProductionLineOpe)
     *
     * @param toolProductionLineOpeFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolProductionLineOpeVO>} 状态信息
     */
    PageVO<ToolProductionLineOpeVO> queryToolProductionLineOpe(ToolProductionLineOpeFilterDTO toolProductionLineOpeFilterDTO);

    /**
     * 查询一个
     *
     * @param id (ToolProductionLineOpe)主键
     * @return {@link ToolProductionLineOpeVO} (ToolProductionLineOpe)信息
     */
    ToolProductionLineOpeVO queryToolProductionLineOpeById(Long id);

    ToolDmIvSummaryVO queryElectricityPerformanceReport(Long id);
}
